using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BerkoRules.Objects;
using Microsoft.VisualBasic.CompilerServices;
using BerkoRules.Mappers;
using BerkoRules.Entities;
using Microsoft.VisualBasic;
using System.Configuration;
using System.IO;
using System.Diagnostics;

namespace Berko
{
    public partial class frmTrabajos : Form
    {
        private MecanicosObjectList _mecanicos;
        private Trabajos_MecanicosObjectList _mecTrabajos;
        private TrabajosList _trabajos;
        private UnidadesList _unidades;
        private int _indexTr;
        private int _uniID;
        private bool _cargarTodos = true;

        public bool CargarTodos
        {
            get { return _cargarTodos; }
            set { _cargarTodos = value; }
        }

        private System.Collections.Generic.List<string> listaArchs;
        private System.Collections.Generic.List<string> listaArchsE;
        private System.Collections.Generic.List<string> listaArchsN;

        public frmTrabajos()
        {
            InitializeComponent();
        }

        private void Agregar_Mecanico()
        {
            Trabajos_MecanicosObject item = new Trabajos_MecanicosObject();
            if (this._mecTrabajos == null)
            {
                this._mecTrabajos = new Trabajos_MecanicosObjectList();
            }
            item.mec_ID = Conversions.ToShort(this.cboMecanicos.SelectedValue);
            this._mecTrabajos.Add(item);
            this.lbMecanicos.Items.Add(this.cboMecanicos.Text);
        }

        private void BindingNavigatorMoveFirstItem_Click(object sender, EventArgs e)
        {
            this._indexTr = 0;
            this.Cargar_Trabajo();
        }

        private void BindingNavigatorMoveLastItem_Click(object sender, EventArgs e)
        {
            this._indexTr = this._trabajos.Count - 1;
            this.Cargar_Trabajo();
        }

        private void BindingNavigatorMoveNextItem_Click(object sender, EventArgs e)
        {
            this._indexTr++;
            this.Cargar_Trabajo();
        }

        private void BindingNavigatorMovePreviousItem_Click(object sender, EventArgs e)
        {
            this._indexTr--;
            this.Cargar_Trabajo();
        }

        private void Cargar_Combos()
        {
            this.Cargar_Unidades();
            this.Cargar_Mecanicos();
            this.Cargar_Motores();
            this.Cargar_Neumaticos();
            this.Cargar_Viesas();
            this.Cargar_Gestias();
            this.Cargar_Tacografos();
            this.Cargar_Otros();
            this.Cargar_Estados();
            this.Cargar_Facturacion();
        }

        private void Cargar_Estados()
        {
            try
            {
                if (Contenedor.Estados == null)
                {

                    Contenedor.Estados= EstadosMapper.Instance().GetAll();
                }
                this.cboEstados.DataSource = Contenedor.Estados;
                this.cboEstados.DisplayMember = "est_Nombre";
                this.cboEstados.ValueMember = "est_ID";
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudieron traer los estados", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
            }
        }

        private void Cargar_Facturacion()
        {
            try
            {
                if (Contenedor.Facturacion == null)
                {

                    Contenedor.Facturacion = FacturacionMapper.Instance().GetAll();
                }
                this.cboTrabajos.DataSource = Contenedor.Facturacion;
                this.cboTrabajos.DisplayMember = "fac_Nombre";
                this.cboTrabajos.ValueMember = "fac_ID";
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudieron traer los estados del trabajo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
            }
        }

        private void Cargar_Gestias()
        {
            try
            {
                if (Contenedor.Gestias == null)
                {

                    Contenedor.Gestias = GestiasMapper.Instance().GetAll();
                }
                this.cboGestia.DataSource = Contenedor.Gestias;
                this.cboGestia.DisplayMember = "ges_Nombre";
                this.cboGestia.ValueMember = "ges_ID";
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudieron traer las Gestias", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
            }
        }

        private void Cargar_Info_Patente()
        {
            string str;
            //if (this._unidades[this.cboPatentes.SelectedIndex].ClientesEntity != null)
            this.txtEmpresa2.Text = this._unidades[this.cboPatentes.SelectedIndex].ClientesString;
            try
            {
                this.txtMarca.Text = MarcasMapper.Instance().GetOne(ModelosMapper.Instance().GetOne((int)this._unidades[this.cboPatentes.SelectedIndex].mod_ID).mar_ID).mar_Nombre;
                str = UnidadesMapper.Instance().GetOne(this._unidades[this.cboPatentes.SelectedIndex].uni_ID).uni_Nombre;
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                str = "";
                ProjectData.ClearProjectError();
            }
            this.txtUnidad1.Text = str;
            this.txtUnidad2.Text = str;
            this.txtModelo.Text = this._unidades[this.cboPatentes.SelectedIndex].ModelosString;
            this.txtTipo.Text = this._unidades[this.cboPatentes.SelectedIndex].Tipo_UnidadesString;
            this.txtPatente.Text = this._unidades[this.cboPatentes.SelectedIndex].uni_Patente;
            this.txtChasis.Text = this._unidades[this.cboPatentes.SelectedIndex].uni_Chasis;
            this.txtInterno.Text = this._unidades[this.cboPatentes.SelectedIndex].uni_Interno.ToString();
            this.txtColor.Text = this._unidades[this.cboPatentes.SelectedIndex].ColoresString;
            if (this._unidades[this.cboPatentes.SelectedIndex].uni_Volt.HasValue)
            {
                this.txtVolt.Text = this._unidades[this.cboPatentes.SelectedIndex].uni_Volt.Value.ToString();
            }
        }

        private void Cargar_Mecanicos()
        {
            try
            {
                if (Contenedor.Mecanicos == null)
                {

                    Contenedor.Mecanicos = MecanicosMapper.Instance().GetAll();
                }
                this.cboMecanicos.DataSource = Contenedor.Mecanicos;
                this.cboMecanicos.DisplayMember = "mec_Nombre";
                this.cboMecanicos.ValueMember = "mec_ID";
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudieron traer los mec\x00e1nicos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
            }
        }

        private void Cargar_Motores()
        {
            try
            {
                if (Contenedor.Motores == null)
                {

                    Contenedor.Motores = MotoresMapper.Instance().GetAll(); ;
                }
                this.cboMotores.DataSource = Contenedor.Motores;
                this.cboMotores.DisplayMember = "mot_Nombre";
                this.cboMotores.ValueMember = "mot_ID";
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudieron traer los motores", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
            }
        }

        private void Cargar_Neumaticos()
        {
            try
            {
                if (Contenedor.Neumaticos == null)
                {

                    Contenedor.Neumaticos = NeumaticosMapper.Instance().GetAll(); ;
                }
                this.cboNeumaticos.DataSource = Contenedor.Neumaticos;
                this.cboNeumaticos.DisplayMember = "neu_Nombre";
                this.cboNeumaticos.ValueMember = "neu_ID";
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudieron traer los neum\x00e1ticos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
            }
        }

        private void Cargar_Otros()
        {
            try
            {
                if (Contenedor.Otros == null)
                {

                    Contenedor.Otros = OtrosMapper.Instance().GetAll(); ;
                }
                this.cboOtros.DataSource = Contenedor.Otros;
                this.cboOtros.DisplayMember = "otr_Nombre";
                this.cboOtros.ValueMember = "otrID";
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudieron traer los otros tipos de trabajo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
            }
        }

        private void Cargar_Tacografos()
        {
            try
            {
                if (Contenedor.Tacografos == null)
                {

                    Contenedor.Tacografos = TacografosMapper.Instance().GetAll(); ;
                }
                this.cboTacografos.DataSource = Contenedor.Tacografos;
                this.cboTacografos.DisplayMember = "tac_Nombre";
                this.cboTacografos.ValueMember = "tac_ID";
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudieron traer los tac\x00f3grafos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
            }
        }

        private void Cargar_Trabajo()
        {
            this.Traer_Relaciones();
            if (this._trabajos[this._indexTr].est_ID.HasValue)
            {
                this.cboEstados.SelectedValue = this._trabajos[this._indexTr].est_ID;
            }
            if (this._trabajos[this._indexTr].fac_ID.HasValue)
            {
                this.cboTrabajos.SelectedValue = this._trabajos[this._indexTr].fac_ID;
            }
            this.txtEmpresa2.Text = this._trabajos[this._indexTr].tra_Empresa2;
            if (this._trabajos[this._indexTr].tra_fechaHora.HasValue)
            {
                this.txtFecha.Text = ((DateTime)this._trabajos[this._indexTr].tra_fechaHora).ToString("ddMMyy");
            }
            this.txtInforme.Text = this._trabajos[this._indexTr].tra_Observacion;
            this.txtPT.Text = this._trabajos[this._indexTr].tra_pt;
            if (this._trabajos[this._indexTr].tra_Factura.HasValue)
            {
                this.txtFactura.Text = this._trabajos[this._indexTr].tra_Factura.Value.ToString();
            }
            else
            {
                this.txtFactura.Text = string.Empty;
            }
            if (this._trabajos[this._indexTr].uni_ID.HasValue)
            {
                this.cboPatentes.SelectedValue = this._trabajos[this._indexTr].uni_ID;
            }
            this.chkAviso.Checked = this._trabajos[this._indexTr].tra_Aviso;
            this.Verificar_Archivos();

        }

        private void Cargar_Unidades()
        {
            try
            {
                if (Contenedor.Unidades == null)
                {

                    Contenedor.Unidades = UnidadesMapper.Instance().Traer_Patentes(); ;
                }
                this._unidades = Contenedor.Unidades;
                this.cboPatentes.DataSource = this._unidades;
                this.cboPatentes.DisplayMember = "uni_Nombre";
                this.cboPatentes.ValueMember = "uni_ID";
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudieron traer las unidades", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
            }
        }

        private void Cargar_Viesas()
        {
            try
            {
                if (Contenedor.Viesas == null)
                {

                    Contenedor.Viesas = VIESASMapper.Instance().GetAll(); ;
                }
                this.cboViesas.DataSource = Contenedor.Viesas;
                this.cboViesas.DisplayMember = "vie_Nombre";
                this.cboViesas.ValueMember = "vie_ID";
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudieron traer las Viesas", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
            }
        }

        private void cboEstados_Validated(object sender, EventArgs e)
        {
            if ((this.cboEstados.Text.Trim() != string.Empty) && (this.cboEstados.SelectedIndex == -1))
            {
                MessageBox.Show("El estado no existe", "Campo inexistente", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboEstados.Text = string.Empty;
            }
        }

        private void cboGestia_Validated(object sender, EventArgs e)
        {
            if ((this.cboGestia.Text.Trim() != string.Empty) && (this.cboGestia.SelectedIndex == -1))
            {
                MessageBox.Show("La gestia no existe", "Campo inexistente", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboGestia.Text = string.Empty;
            }
        }

        private void cboMecanicos_Validated(object sender, EventArgs e)
        {
            if ((this.cboMecanicos.Text.Trim() != string.Empty) && (this.cboMecanicos.SelectedIndex == -1))
            {
                MessageBox.Show("El mec\x00e1nico no existe", "Campo inexistente", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboMecanicos.Text = string.Empty;
            }
        }

        private void cboMotores_Validated(object sender, EventArgs e)
        {
            if ((this.cboMotores.Text.Trim() != string.Empty) && (this.cboMotores.SelectedIndex == -1))
            {
                MessageBox.Show("El motor no existe", "Campo inexistente", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboMotores.Text = string.Empty;
            }
        }

        private void cboNeumaticos_Validated(object sender, EventArgs e)
        {
            if ((this.cboNeumaticos.Text.Trim() != string.Empty) && (this.cboNeumaticos.SelectedIndex == -1))
            {
                MessageBox.Show("El neum\x00e1tico no existe", "Campo inexistente", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboNeumaticos.Text = string.Empty;
            }
        }

        private void cboOtros_Validated(object sender, EventArgs e)
        {
            if ((this.cboOtros.Text.Trim() != string.Empty) && (this.cboOtros.SelectedIndex == -1))
            {
                MessageBox.Show("Otro tipo de trabajo no existe", "Campo inexistente", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboOtros.Text = string.Empty;
            }
        }

        private void cboPatentes_SelectedValueChanged(object sender, EventArgs e)
        {
            if (this.cboPatentes.SelectedIndex > -1)
            {
                this.Cargar_Info_Patente();
            }
        }

        private void cboPatentes_Validated(object sender, EventArgs e)
        {
            if ((this.cboPatentes.Text.Trim() != string.Empty) && (this.cboPatentes.SelectedIndex == -1))
            {
                MessageBox.Show("La patente no existe", "Campo inexistente", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboPatentes.Text = string.Empty;
            }
        }

        private void cboTacografos_Validated(object sender, EventArgs e)
        {
            if ((this.cboTacografos.Text.Trim() != string.Empty) && (this.cboTacografos.SelectedIndex == -1))
            {
                MessageBox.Show("El tac\x00f3grafo no existe", "Campo inexistente", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboTacografos.Text = string.Empty;
            }
        }

        private void cboTrabajos_Validated(object sender, EventArgs e)
        {
            if ((this.cboTrabajos.Text.Trim() != string.Empty) && (this.cboTrabajos.SelectedIndex == -1))
            {
                MessageBox.Show("El estado de trabajo no existe", "Campo inexistente", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboTrabajos.Text = string.Empty;
            }
        }

        private void cboViesas_Validated(object sender, EventArgs e)
        {
            if ((this.cboViesas.Text.Trim() != string.Empty) && (this.cboViesas.SelectedIndex == -1))
            {
                MessageBox.Show("La viesa no existe", "Campo inexistente", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboViesas.Text = string.Empty;
            }
        }

        private void cmdAgregarMec_Click(object sender, EventArgs e)
        {
            if ((this.cboMecanicos.SelectedIndex > -1) && !this.Existe_Mecanico())
            {
                this.Agregar_Mecanico();
                this.cmdQuitarMec.Enabled = false;
            }
        }

        private void cmdBuscarFac_Click(object sender, EventArgs e)
        {
            if (this.txtFactura.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Debe ingresar una factura correcta", "Campo vac\x00edo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                this.txtFactura.Focus();
            }
            else if (this._trabajos != null)
            {
                int num2 = this._trabajos.Count - 1;
                for (int i = 0; i <= num2; i++)
                {
                    if (this._trabajos[i].tra_Factura.HasValue && (this._trabajos[i].tra_Factura.Value == Conversions.ToInteger(this.txtFactura.Text)))
                    {
                        this._indexTr = i;
                        this.BindingSource1.Position = i;
                        this.Cargar_Trabajo();
                    }
                }
            }
        }

        private void cmdBuscarPt_Click(object sender, EventArgs e)
        {
            if (this.txtPT.Text.Trim() == string.Empty)
            {
                this.txtPT.Focus();
                MessageBox.Show("Debe ingresar un PT correcto", "Campo vac\x00edo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else if (this._trabajos != null)
            {
                int num2 = this._trabajos.Count - 1;
                for (int i = 0; i <= num2; i++)
                {
                    if (this._trabajos[i].tra_pt == this.txtPT.Text.Trim())
                    {
                        this._indexTr = i;
                        this.BindingSource1.Position = i;
                        this.Cargar_Trabajo();
                    }
                }
            }
        }

        private void cmdEliminar_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("\x00bfDese eliminar el trabajo seleccionado?", "Eliminar trabajo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                this.Eliminar_Trabajo();
            }
        }

        private void cmdLimpiar_Click(object sender, EventArgs e)
        {
            this.Limpiar_Trabajo();
        }

        private void cmdModificar_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("\x00bfDese modificar el trabajo seleccionado?", "Modificar trabajo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                this.Modificar_Trabajo();
            }
        }

        private void cmdNuevo_Click(object sender, EventArgs e)
        {
            if ((MessageBox.Show("\x00bfDese guardar el trabajo?", "Guardar trabajo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) && this.Validar_Trabajo())
            {
                this.Guardar_Trabajo();
                this.Traer_Trabajos();
                this._indexTr = this._trabajos.Count - 1;
                this.BindingSource1.MoveLast();
                this.cmdLimpiar.Enabled = true;
                this.cmdModificar.Enabled = true;
                this.cmdEliminar.Enabled = true;
                this.cmdNuevo.Enabled = true;
            }
        }

        private void cmdQuitarMec_Click(object sender, EventArgs e)
        {
            if (this.lbMecanicos.SelectedIndex > -1)
            {
                this.Quitar_Mecanico();
            }
        }

        private void cmdSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cmdAddArch_Click(object sender, EventArgs e)
        {

            if (this.ofd1.ShowDialog() == DialogResult.OK)
            {
                string[] fileNames = this.ofd1.FileNames;
                bool flag = false;
                int num3 = fileNames.Length - 1;
                for (int i = 0; i <= num3; i++)
                {
                    flag = false;
                    int num4 = this.lvArchivos.Items.Count - 1;
                    for (int j = 0; j <= num4; j++)
                    {
                        if (this.lvArchivos.Items[j].Name.ToUpper() == this.ofd1.SafeFileNames[i].ToUpper())
                        {
                            flag = true;
                            break;
                        }
                    }
                    if (!flag)
                    {
                        ListViewItem item = new ListViewItem();
                        this.listaArchs.Add(this.ofd1.FileNames[i]);
                        this.listaArchsN.Add(this.ofd1.FileNames[i]);
                        string str = this.ofd1.SafeFileNames[i].Substring(this.ofd1.SafeFileNames[i].LastIndexOf(".") + 1).ToUpper();
                        switch (str)
                        {
                            case "JPG":
                            case "JPEG":
                            case "GIF":
                            case "PNG":
                                item.ImageIndex = 0;
                                break;

                            default:
                                if ((str == "XLS") || (str == "XLSX"))
                                {
                                    item.ImageIndex = 1;
                                }
                                else if (((str == "DOC") || (str == "DOCX")) || (str == "RTF"))
                                {
                                    item.ImageIndex = 2;
                                }
                                else if ((str == "ZIP") || (str == "RAR"))
                                {
                                    item.ImageIndex = 3;
                                }
                                else
                                {
                                    item.ImageIndex = 4;
                                }
                                break;
                        }
                        item.Name = this.ofd1.SafeFileNames[i];
                        item.Text = this.ofd1.SafeFileNames[i];
                        this.lvArchivos.Items.Add(item);
                        continue;
                    }
                    MessageBox.Show("El archivo " + this.ofd1.SafeFileNames[i] + " ya existe", "Archivo existente", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
            }
        }

        private void cmdDelArch_Click(object sender, EventArgs e)
        {
            bool flag = false;
            int num2 = this.listaArchsN.Count - 1;
            int index = 0;
            while (index <= num2)
            {
                if (this.listaArchsN[index] == this.listaArchs[this.lvArchivos.SelectedItems[0].Index])
                {
                    flag = true;
                    break;
                }
                index++;
            }
            if (flag)
            {
                this.listaArchsN.RemoveAt(index);
            }
            else
            {
                this.listaArchsE.Add(this.listaArchs[this.lvArchivos.SelectedItems[0].Index]);
            }
            this.listaArchs.RemoveAt(this.lvArchivos.SelectedItems[0].Index);
            this.lvArchivos.Items.RemoveAt(this.lvArchivos.SelectedItems[0].Index);
            this.cmdDelArch.Enabled = false;
        }

        private void Eliminar_Trabajo()
        {
            try
            {
                TrabajosMapper.Instance().Delete(this._trabajos[this._indexTr].tra_ID);
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudo eliminar el trabajo.", "Eliminar trabajo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                ProjectData.ClearProjectError();
                return;
            }
            this.Traer_Trabajos();
            this.BindingSource1.MoveFirst();
            this.cmdModificar.Enabled = false;
            this.cmdEliminar.Enabled = false;
            this._indexTr = 0;
            if ((this._trabajos != null) && (this._trabajos.Count > 0))
            {
                this.Cargar_Trabajo();
                this.cmdModificar.Enabled = true;
                this.cmdEliminar.Enabled = true;
            }
        }

        private bool Existe_Mecanico()
        {
            int num2 = this.lbMecanicos.Items.Count - 1;
            for (int i = 0; i <= num2; i++)
            {
                if (this.lbMecanicos.Items[i].ToString() == this.cboMecanicos.Text)
                {
                    return true;
                }
            }
            return false;
        }

        private void frmUnidades_Load(object sender, EventArgs e)
        {
            this.listaArchs = new List<string>();
            this.listaArchsN = new List<string>();
            this.listaArchsE = new List<string>();
            this.Cargar_Combos();
            if (_cargarTodos)
                this.Traer_Trabajos();
            this.cmdModificar.Enabled = false;
            this.cmdEliminar.Enabled = false;
            this.cmdAddArch.Enabled = true;
            this.cmdDelArch.Enabled = true;
            if ((this._trabajos != null) && (this._trabajos.Count > 0))
            {
                this.Cargar_Trabajo();
                this.cmdModificar.Enabled = true;
                this.cmdEliminar.Enabled = true;
            }
            if (this._uniID > 0)
            {
                this.cmdLimpiar.PerformClick();
                this.cboPatentes.SelectedValue = this._uniID;
                this.cmdLimpiar.Enabled = false;
                this.cmdNuevo.Enabled = true;
                this.cmdModificar.Enabled = false;
                this.cmdEliminar.Enabled = false;
            }
        }

        private void Guardar_Trabajo()
        {
            Trabajos row = new Trabajos();
            bool flag = false;
            row.est_ID = Conversions.ToByte(this.cboEstados.SelectedValue);
            row.fac_ID = Conversions.ToByte(this.cboTrabajos.SelectedValue);
            row.tra_Empresa2 = this.txtEmpresa2.Text;
            row.tra_fechaHora = Conversions.ToDate(this.txtFecha.Text);
            row.tra_Observacion = this.txtInforme.Text;
            row.tra_pt = this.txtPT.Text;
            row.uni_ID = Conversions.ToInteger(this.cboPatentes.SelectedValue);
            row.tra_Aviso = this.chkAviso.Checked;
            if (this.txtFactura.Text.Trim() != string.Empty)
            {
                row.tra_Factura = Conversions.ToInteger(this.txtFactura.Text);
            }
            try
            {
                TrabajosMapper.Instance().Insert(row);
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudo guardar el trabajo. Reintente por favor\r\nError: " + exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
                return;
            }
            int num2 = this._mecTrabajos.Count - 1;
            for (int i = 0; i <= num2; i++)
            {
                this._mecTrabajos[i].tra_ID = row.tra_ID;
                try
                {
                    Trabajos_MecanicosMapper.Instance().Insert(this._mecTrabajos[i]);
                }
                catch (Exception exception9)
                {
                    ProjectData.SetProjectError(exception9);
                    Exception exception2 = exception9;
                    MessageBox.Show("No se pudo guardar el mec\x00e1nico. Reintente por favor\r\nError: " + exception2.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoMotor.SelectedIndex > 0) && (Conversions.ToInteger(this.cboMotores.SelectedValue) > 0))
            {
                Trabajos_MotoresObject obj3 = new Trabajos_MotoresObject();
                obj3.mot_ID = Conversions.ToInteger(this.cboMotores.SelectedValue);
                obj3.tra_ID = row.tra_ID;
                obj3.tre_ID = (byte)this.cboEstadoMotor.SelectedIndex;
                try
                {
                    Trabajos_MotoresMapper.Instance().Insert(obj3);
                }
                catch (Exception exception10)
                {
                    ProjectData.SetProjectError(exception10);
                    Exception exception3 = exception10;
                    MessageBox.Show("No se pudo guardar el motor. Reintente por favor\r\nError: " + exception3.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoNeu.SelectedIndex > 0) && (Conversions.ToInteger(this.cboNeumaticos.SelectedValue) > 0))
            {
                Trabajos_NeumaticosObject obj4 = new Trabajos_NeumaticosObject();
                obj4.neu_ID = Conversions.ToInteger(this.cboNeumaticos.SelectedValue);
                obj4.tra_ID = row.tra_ID;
                obj4.tre_ID = (byte)this.cboEstadoNeu.SelectedIndex;
                try
                {
                    Trabajos_NeumaticosMapper.Instance().Insert(obj4);
                }
                catch (Exception exception11)
                {
                    ProjectData.SetProjectError(exception11);
                    Exception exception4 = exception11;
                    MessageBox.Show("No se pudo guardar el neum\x00e1tico. Reintente por favor\r\nError: " + exception4.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoVie.SelectedIndex > 0) && (Conversions.ToInteger(this.cboViesas.SelectedValue) > 0))
            {
                Trabajos_ViesasObject obj5 = new Trabajos_ViesasObject();
                obj5.vie_ID = Conversions.ToInteger(this.cboViesas.SelectedValue);
                obj5.tra_ID = row.tra_ID;
                obj5.tre_ID = (byte)this.cboEstadoVie.SelectedIndex;
                try
                {
                    Trabajos_ViesasMapper.Instance().Insert(obj5);
                }
                catch (Exception exception12)
                {
                    ProjectData.SetProjectError(exception12);
                    Exception exception5 = exception12;
                    MessageBox.Show("No se pudo guardar la Viesa. Reintente por favor\r\nError: " + exception5.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoGes.SelectedIndex > 0) && (Conversions.ToInteger(this.cboGestia.SelectedValue) > 0))
            {
                Trabajos_GestiasObject obj6 = new Trabajos_GestiasObject();
                obj6.ges_ID = Conversions.ToInteger(this.cboGestia.SelectedValue);
                obj6.tra_ID = row.tra_ID;
                obj6.tre_ID = (byte)this.cboEstadoGes.SelectedIndex;
                try
                {
                    Trabajos_GestiasMapper.Instance().Insert(obj6);
                }
                catch (Exception exception13)
                {
                    ProjectData.SetProjectError(exception13);
                    Exception exception6 = exception13;
                    MessageBox.Show("No se pudo guardar la Gestia. Reintente por favor\r\nError: " + exception6.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoTaco.SelectedIndex > 0) && (Conversions.ToInteger(this.cboTacografos.SelectedValue) > 0))
            {
                Trabajos_TacografosObject obj7 = new Trabajos_TacografosObject();
                obj7.tac_ID = Conversions.ToInteger(this.cboTacografos.SelectedValue);
                obj7.tra_ID = row.tra_ID;
                obj7.tre_ID = (byte)this.cboEstadoTaco.SelectedIndex;
                try
                {
                    Trabajos_TacografosMapper.Instance().Insert(obj7);
                }
                catch (Exception exception14)
                {
                    ProjectData.SetProjectError(exception14);
                    Exception exception7 = exception14;
                    MessageBox.Show("No se pudo guardar el tac\x00f3grafo. Reintente por favor\r\nError: " + exception7.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoOtros.SelectedIndex > 0) && (Conversions.ToInteger(this.cboOtros.SelectedValue) > 0))
            {
                Trabajos_OtrosObject obj8 = new Trabajos_OtrosObject();
                obj8.otrID = Conversions.ToInteger(this.cboOtros.SelectedValue);
                obj8.tra_ID = row.tra_ID;
                obj8.tre_ID = (byte)this.cboEstadoOtros.SelectedIndex;
                try
                {
                    Trabajos_OtrosMapper.Instance().Insert(obj8);
                }
                catch (Exception exception15)
                {
                    ProjectData.SetProjectError(exception15);
                    Exception exception8 = exception15;
                    MessageBox.Show("No se pudo guardar el otro tipo de trabajo. Reintente por favor\r\nError: " + exception8.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if (this.lvArchivos.Items.Count > 0)
            {
                string path = ConfigurationManager.AppSettings["archivos"] + row.tra_ID.ToString();
                Directory.CreateDirectory(path);
                int num5 = this.lvArchivos.Items.Count - 1;
                for (int i = 0; i <= num5; i++)
                {
                    Trabajo_ArchivosObject obj3 = new Trabajo_ArchivosObject();
                    obj3.tra_Arch = this.listaArchs[i].Substring(this.listaArchs[i].LastIndexOf(@"\") + 1).ToUpper();
                    obj3.tra_ID = row.tra_ID;
                    obj3.tra_Lenght = 0;
                    try
                    {
                        File.Copy(this.listaArchs[i], path + @"\" + obj3.tra_Arch.ToUpper());
                        Trabajo_ArchivosMapper.Instance().Insert(obj3);
                    }
                    catch (Exception exception9)
                    {
                        Exception exception4 = exception9;
                    }
                }
            }
            if (!flag)
            {
                MessageBox.Show("El trabajo se guard\x00f3 correctamente", "Operaci\x00f3n correcta", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }

        private void lbMecanicos_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.lbMecanicos.SelectedIndex > -1)
            {
                this.cmdQuitarMec.Enabled = true;
            }
        }

        private void Limpiar_Trabajo()
        {
            this.cboEstados.Text = string.Empty;
            this.cboTrabajos.Text = string.Empty;
            this.txtEmpresa2.Text = string.Empty;
            this.txtUnidad2.Text = string.Empty;
            this.txtMarca.Text = string.Empty;
            this.txtModelo.Text = string.Empty;
            this.txtTipo.Text = string.Empty;
            this.txtPatente.Text = string.Empty;
            this.txtChasis.Text = string.Empty;
            this.txtInterno.Text = string.Empty;
            this.txtColor.Text = string.Empty;
            this.txtVolt.Text = string.Empty;
            this.txtFecha.Text = "__/__/";
            this.txtInforme.Text = string.Empty;
            this.txtPT.Text = string.Empty;
            this.txtFactura.Text = string.Empty;
            this.cboPatentes.Text = string.Empty;
            this.cboEstadoGes.SelectedIndex = 0;
            this.cboEstadoMotor.SelectedIndex = 0;
            this.cboEstadoNeu.SelectedIndex = 0;
            this.cboEstadoOtros.SelectedIndex = 0;
            this.cboEstadoTaco.SelectedIndex = 0;
            this.cboEstadoVie.SelectedIndex = 0;
            this.cboMotores.Text = string.Empty;
            this.cboNeumaticos.Text = string.Empty;
            this.cboGestia.Text = string.Empty;
            this.cboViesas.Text = string.Empty;
            this.cboOtros.Text = string.Empty;
            this.cboTacografos.Text = string.Empty;
            this.chkAviso.Checked = false;
            this.lbMecanicos.Items.Clear();
            this._mecTrabajos = new Trabajos_MecanicosObjectList();
            this.txtFecha.Text = DateTime.Now.ToString("ddMMyy");
            this.txtPT.Focus();
        }

        private void lnkEstados_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmEstados estados = new frmEstados();
            if (estados.ShowDialog() != DialogResult.Cancel)
            {
                this.Cargar_Estados();
            }
        }

        private void lnkGestia_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmGestias gestias = new frmGestias();
            if (gestias.ShowDialog() != DialogResult.Cancel)
            {
                this.Cargar_Gestias();
            }
        }

        private void lnkMecanico_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmMecanicos mecanicos = new frmMecanicos();
            if (mecanicos.ShowDialog() != DialogResult.Cancel)
            {
                this.Cargar_Mecanicos();
            }
        }

        private void lnkMotores_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmMotores motores = new frmMotores();
            if (motores.ShowDialog() != DialogResult.Cancel)
            {
                this.Cargar_Motores();
            }
        }

        private void lnkNeumatico_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmNeumaticos neumaticos = new frmNeumaticos();
            if (neumaticos.ShowDialog() != DialogResult.Cancel)
            {
                this.Cargar_Neumaticos();
            }
        }

        private void lnkOtros_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmOtros otros = new frmOtros();
            if (otros.ShowDialog() != DialogResult.Cancel)
            {
                this.Cargar_Otros();
            }
        }

        private void lnkTacografo_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmTacografos tacografos = new frmTacografos();
            if (tacografos.ShowDialog() != DialogResult.Cancel)
            {
                this.Cargar_Tacografos();
            }
        }

        private void lnkTrabajos_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmFacturacion facturacion = new frmFacturacion();
            if (facturacion.ShowDialog() != DialogResult.Cancel)
            {
                this.Cargar_Facturacion();
            }
        }

        private void lnkViesas_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmViesas viesas = new frmViesas();
            if (viesas.ShowDialog() != DialogResult.Cancel)
            {
                this.Cargar_Viesas();
            }
        }

        private void Modificar_Trabajo()
        {
            bool flag = false;
            try
            {
                this._trabajos[this._indexTr].est_ID = Conversions.ToByte(this.cboEstados.SelectedValue);
                this._trabajos[this._indexTr].fac_ID = Conversions.ToByte(this.cboTrabajos.SelectedValue);
                this._trabajos[this._indexTr].tra_Empresa2 = this.txtEmpresa2.Text;
                this._trabajos[this._indexTr].tra_fechaHora = Conversions.ToDate(this.txtFecha.Text);
                this._trabajos[this._indexTr].tra_Observacion = this.txtInforme.Text;
                this._trabajos[this._indexTr].tra_pt = this.txtPT.Text;
                this._trabajos[this._indexTr].uni_ID = Conversions.ToInteger(this.cboPatentes.SelectedValue);
                this._trabajos[this._indexTr].tra_Aviso = this.chkAviso.Checked;
                if (this.txtFactura.Text.Trim() != string.Empty)
                {
                    this._trabajos[this._indexTr].tra_Factura = Conversions.ToInteger(this.txtFactura.Text);
                }
                else
                {
                    int? nullable;
                    this._trabajos[this._indexTr].tra_Factura = null;
                }
                int num;
                string path = ConfigurationManager.AppSettings["archivosTrabajo"] + this._trabajos[this._indexTr].tra_ID.ToString();
                int num3 = this.listaArchsE.Count - 1;
                for (num = 0; num <= num3; num++)
                {
                    try
                    {
                        File.Delete(this.listaArchsE[num]);
                    }
                    catch (Exception exception12)
                    {
                        Exception exception4 = exception12;
                    }
                }
                try
                {
                    Trabajo_ArchivosMapper.Instance().DeleteByTrabajos(_trabajos[this._indexTr].tra_ID);
                }
                catch (Exception exception13)
                {
                    Exception exception5 = exception13;
                }
                if (this.lvArchivos.Items.Count > 0)
                {
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    int num4 = this.listaArchsN.Count - 1;
                    for (num = 0; num <= num4; num++)
                    {
                        try
                        {
                            File.Copy(this.listaArchsN[num], path + @"\" + this.listaArchsN[num].Substring(this.listaArchsN[num].LastIndexOf(@"\") + 1).ToUpper(), true);
                        }
                        catch (Exception exception14)
                        {
                            Exception exception6 = exception14;
                        }
                    }
                    int num5 = this.lvArchivos.Items.Count - 1;
                    for (num = 0; num <= num5; num++)
                    {
                        Trabajo_ArchivosObject obj3 = new Trabajo_ArchivosObject();
                        obj3.tra_Arch = this.listaArchs[num].Substring(this.listaArchs[num].LastIndexOf(@"\") + 1).ToUpper();
                        obj3.tra_ID = _trabajos[this._indexTr].tra_ID;
                        obj3.tra_Lenght = 0;
                        try
                        {
                            Trabajo_ArchivosMapper.Instance().Insert(obj3);
                        }
                        catch (Exception exception15)
                        {
                            Exception exception7 = exception15;
                        }
                    }
                }
                if (!flag)
                {
                    MessageBox.Show("El trabajo se guard\x00f3 correctamente", "Operaci\x00f3n correcta", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudo guardar el trabajo. Reintente por favor\r\nError: " + exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
                return;
            }
            try
            {
                TrabajosMapper.Instance().Save(this._trabajos[this._indexTr]);
                Trabajos_MecanicosMapper.Instance().DeleteByTrabajos(this._trabajos[this._indexTr].tra_ID);
                Trabajos_GestiasMapper.Instance().DeleteByTrabajos(this._trabajos[this._indexTr].tra_ID);
                Trabajos_MotoresMapper.Instance().DeleteByTrabajos(this._trabajos[this._indexTr].tra_ID);
                Trabajos_NeumaticosMapper.Instance().DeleteByTrabajos(this._trabajos[this._indexTr].tra_ID);
                Trabajos_OtrosMapper.Instance().DeleteByTrabajos(this._trabajos[this._indexTr].tra_ID);
                Trabajos_TacografosMapper.Instance().DeleteByTrabajos(this._trabajos[this._indexTr].tra_ID);
                Trabajos_ViesasMapper.Instance().DeleteByTrabajos(this._trabajos[this._indexTr].tra_ID);
            }
            catch (Exception exception10)
            {
                ProjectData.SetProjectError(exception10);
                Exception exception2 = exception10;
                MessageBox.Show("No se pudo guardar el trabajo. Reintente por favor\r\nError: " + exception2.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                ProjectData.ClearProjectError();
                return;
                ProjectData.ClearProjectError();
            }
            int num2 = this._mecTrabajos.Count - 1;
            for (int i = 0; i <= num2; i++)
            {
                this._mecTrabajos[i].tra_ID = this._trabajos[this._indexTr].tra_ID;
                try
                {
                    Trabajos_MecanicosMapper.Instance().Insert(this._mecTrabajos[i]);
                }
                catch (Exception exception11)
                {
                    ProjectData.SetProjectError(exception11);
                    Exception exception3 = exception11;
                    MessageBox.Show("No se pudo guardar el mec\x00e1nico. Reintente por favor\r\nError: " + exception3.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoMotor.SelectedIndex > 0) && (Conversions.ToInteger(this.cboMotores.SelectedValue) > 0))
            {
                Trabajos_MotoresObject row = new Trabajos_MotoresObject();
                row.mot_ID = Conversions.ToInteger(this.cboMotores.SelectedValue);
                row.tra_ID = this._trabajos[this._indexTr].tra_ID;
                row.tre_ID = (byte)this.cboEstadoMotor.SelectedIndex;
                try
                {
                    Trabajos_MotoresMapper.Instance().Insert(row);
                }
                catch (Exception exception12)
                {
                    ProjectData.SetProjectError(exception12);
                    Exception exception4 = exception12;
                    MessageBox.Show("No se pudo guardar el motor. Reintente por favor\r\nError: " + exception4.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoNeu.SelectedIndex > 0) && (Conversions.ToInteger(this.cboNeumaticos.SelectedValue) > 0))
            {
                Trabajos_NeumaticosObject obj3 = new Trabajos_NeumaticosObject();
                obj3.neu_ID = Conversions.ToInteger(this.cboNeumaticos.SelectedValue);
                obj3.tra_ID = this._trabajos[this._indexTr].tra_ID;
                obj3.tre_ID = (byte)this.cboEstadoNeu.SelectedIndex;
                try
                {
                    Trabajos_NeumaticosMapper.Instance().Insert(obj3);
                }
                catch (Exception exception13)
                {
                    ProjectData.SetProjectError(exception13);
                    Exception exception5 = exception13;
                    MessageBox.Show("No se pudo guardar el neum\x00e1tico. Reintente por favor\r\nError: " + exception5.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoVie.SelectedIndex > 0) && (Conversions.ToInteger(this.cboViesas.SelectedValue) > 0))
            {
                Trabajos_ViesasObject obj4 = new Trabajos_ViesasObject();
                obj4.vie_ID = Conversions.ToInteger(this.cboViesas.SelectedValue);
                obj4.tra_ID = this._trabajos[this._indexTr].tra_ID;
                obj4.tre_ID = (byte)this.cboEstadoVie.SelectedIndex;
                try
                {
                    Trabajos_ViesasMapper.Instance().Insert(obj4);
                }
                catch (Exception exception14)
                {
                    ProjectData.SetProjectError(exception14);
                    Exception exception6 = exception14;
                    MessageBox.Show("No se pudo guardar la Viesa. Reintente por favor\r\nError: " + exception6.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoGes.SelectedIndex > 0) && (Conversions.ToInteger(this.cboGestia.SelectedValue) > 0))
            {
                Trabajos_GestiasObject obj5 = new Trabajos_GestiasObject();
                obj5.ges_ID = Conversions.ToInteger(this.cboGestia.SelectedValue);
                obj5.tra_ID = this._trabajos[this._indexTr].tra_ID;
                obj5.tre_ID = (byte)this.cboEstadoGes.SelectedIndex;
                try
                {
                    Trabajos_GestiasMapper.Instance().Insert(obj5);
                }
                catch (Exception exception15)
                {
                    ProjectData.SetProjectError(exception15);
                    Exception exception7 = exception15;
                    MessageBox.Show("No se pudo guardar la Gestia. Reintente por favor\r\nError: " + exception7.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoTaco.SelectedIndex > 0) && (Conversions.ToInteger(this.cboTacografos.SelectedValue) > 0))
            {
                Trabajos_TacografosObject obj6 = new Trabajos_TacografosObject();
                obj6.tac_ID = Conversions.ToInteger(this.cboTacografos.SelectedValue);
                obj6.tra_ID = this._trabajos[this._indexTr].tra_ID;
                obj6.tre_ID = (byte)this.cboEstadoTaco.SelectedIndex;
                try
                {
                    Trabajos_TacografosMapper.Instance().Insert(obj6);
                }
                catch (Exception exception16)
                {
                    ProjectData.SetProjectError(exception16);
                    Exception exception8 = exception16;
                    MessageBox.Show("No se pudo guardar el tac\x00f3grafo. Reintente por favor\r\nError: " + exception8.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if ((this.cboEstadoOtros.SelectedIndex > 0) && (Conversions.ToInteger(this.cboOtros.SelectedValue) > 0))
            {
                Trabajos_OtrosObject obj7 = new Trabajos_OtrosObject();
                obj7.otrID = Conversions.ToInteger(this.cboOtros.SelectedValue);
                obj7.tra_ID = this._trabajos[this._indexTr].tra_ID;
                obj7.tre_ID = (byte)this.cboEstadoOtros.SelectedIndex;
                try
                {
                    Trabajos_OtrosMapper.Instance().Insert(obj7);
                }
                catch (Exception exception17)
                {
                    ProjectData.SetProjectError(exception17);
                    Exception exception9 = exception17;
                    MessageBox.Show("No se pudo guardar el otro tipo de trabajo. Reintente por favor\r\nError: " + exception9.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    flag = true;
                    ProjectData.ClearProjectError();
                }
            }
            if (!flag)
            {
                MessageBox.Show("El trabajo se modific\x00f3 correctamente", "Operaci\x00f3n correcta", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }

        private void Quitar_Mecanico()
        {
            this._mecTrabajos.RemoveAt(this.lbMecanicos.SelectedIndex);
            this.lbMecanicos.Items.RemoveAt(this.lbMecanicos.SelectedIndex);
        }

        private void Traer_Relaciones()
        {
            Trabajos_GestiasObjectList byTrabajos = null;
            Trabajos_MotoresObjectList list2 = null;
            Trabajos_NeumaticosObjectList list3 = null;
            Trabajos_OtrosObjectList list4 = null;
            Trabajos_TacografosObjectList list5 = null;
            Trabajos_ViesasObjectList list6 = null;
            try
            {
                this._mecTrabajos = Trabajos_MecanicosMapper.Instance().GetByTrabajos(this._trabajos[this._indexTr].tra_ID);
                byTrabajos = Trabajos_GestiasMapper.Instance().GetByTrabajos(this._trabajos[this._indexTr].tra_ID);
                list2 = Trabajos_MotoresMapper.Instance().GetByTrabajos(this._trabajos[this._indexTr].tra_ID);
                list3 = Trabajos_NeumaticosMapper.Instance().GetByTrabajos(this._trabajos[this._indexTr].tra_ID);
                list4 = Trabajos_OtrosMapper.Instance().GetByTrabajos(this._trabajos[this._indexTr].tra_ID);
                list5 = Trabajos_TacografosMapper.Instance().GetByTrabajos(this._trabajos[this._indexTr].tra_ID);
                list6 = Trabajos_ViesasMapper.Instance().GetByTrabajos(this._trabajos[this._indexTr].tra_ID);
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                ProjectData.ClearProjectError();
                return;
            }
            this.lbMecanicos.Items.Clear();
            if (this._mecTrabajos.Count > 0)
            {
                int num2 = this._mecTrabajos.Count - 1;
                for (int i = 0; i <= num2; i++)
                {
                    this.lbMecanicos.Items.Add(this._mecTrabajos[i].MecanicosString);
                }
            }
            if (list2.Count > 0)
            {
                this.cboMotores.SelectedValue = list2[0].mot_ID;
                this.cboMotores.Text = list2[0].MotoresString;
                this.cboEstadoMotor.SelectedIndex = list2[0].tre_ID;
            }
            else
            {
                this.cboMotores.Text = "";
                this.cboEstadoMotor.SelectedIndex = 0;
            }
            if (list3.Count > 0)
            {
                this.cboNeumaticos.SelectedValue = list3[0].neu_ID;
                this.cboNeumaticos.Text = list3[0].NeumaticosString;
                this.cboEstadoNeu.SelectedIndex = list3[0].tre_ID;
            }
            else
            {
                this.cboNeumaticos.Text = "";
                this.cboEstadoNeu.SelectedIndex = 0;
            }
            if (list4.Count > 0)
            {
                this.cboOtros.SelectedValue = list4[0].otrID;
                this.cboOtros.Text = list4[0].OtrosString;
                this.cboEstadoOtros.SelectedIndex = list4[0].tre_ID;
            }
            else
            {
                this.cboOtros.Text = "";
                this.cboEstadoOtros.SelectedIndex = 0;
            }
            if (list5.Count > 0)
            {
                this.cboTacografos.SelectedValue = list5[0].tac_ID;
                this.cboTacografos.Text = list5[0].TacografosString;
                this.cboEstadoTaco.SelectedIndex = list5[0].tre_ID;
            }
            else
            {
                this.cboTacografos.Text = "";
                this.cboEstadoTaco.SelectedIndex = 0;
            }
            if (list6.Count > 0)
            {
                this.cboViesas.SelectedValue = list6[0].vie_ID;
                this.cboViesas.Text = list6[0].VIESASString;
                this.cboEstadoVie.SelectedIndex = list6[0].tre_ID;
            }
            else
            {
                this.cboViesas.Text = "";
                this.cboEstadoVie.SelectedIndex = 0;
            }
            if (byTrabajos.Count > 0)
            {
                this.cboGestia.SelectedValue = byTrabajos[0].ges_ID;
                this.cboGestia.Text = byTrabajos[0].GestiasString;
                this.cboEstadoGes.SelectedIndex = byTrabajos[0].tre_ID;
            }
            else
            {
                this.cboGestia.Text = "";
                this.cboEstadoGes.SelectedIndex = 0;
            }
        }

        private void Traer_Trabajos()
        {
            try
            {
                this._trabajos = TrabajosMapper.Instance().GetAll();
                this.BindingSource1.DataSource = this._trabajos;
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                MessageBox.Show("No se pudieron traer los trabajos. Reintente por favor...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this._trabajos = null;
                ProjectData.ClearProjectError();
            }
        }

        private bool Validar_Trabajo()
        {
            if (this.txtPT.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Debe ingresar un n\x00famero de trabajo", "Campo vac\x00edo", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.txtPT.Focus();
                return false;
            }
            if ((this.txtFactura.Text.Trim() != string.Empty) && !Versioned.IsNumeric(this.txtFactura.Text))
            {
                MessageBox.Show("Debe ingresar una factura v\x00e1lida", "Factura inv\x00e1lida", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.txtFactura.Focus();
                return false;
            }
            if (this.txtFecha.Text.Trim() == "__/__/")
            {
                MessageBox.Show("Debe ingresar una fecha", "Campo vac\x00edo", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.txtFecha.Focus();
                return false;
            }

            //TODO: cambiar el Information.IsDate de vb por uno de c#
            if (!Information.IsDate(this.txtFecha.Text))
            {
                MessageBox.Show("Debe ingresar una fecha v\x00e1lida", "Fecha inv\x00e1lida", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.txtFecha.Focus();
                return false;
            }
            if (this.txtUnidad1.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Debe ingresar una unidad", "Campo vac\x00edo", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.txtUnidad1.Focus();
                return false;
            }
            if (this.txtEmpresa2.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Debe seleccionar una empresa", "Campo vac\x00edo", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboPatentes.Focus();
                return false;
            }
            if (this.txtEmpresa2.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Debe seleccionar una empresa", "Campo vac\x00edo", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                this.cboPatentes.Focus();
                return false;
            }
            return true;
        }

        private void lvArchivos_Click(object sender, EventArgs e)
        {

            if (this.lvArchivos.SelectedItems != null)
            {
                if (this.lvArchivos.SelectedItems.Count > 0)
                {
                    this.cmdDelArch.Enabled = true;
                }
                else
                {
                    this.cmdDelArch.Enabled = false;
                }
            }
            else
            {
                this.cmdDelArch.Enabled = false;
            }

        }

        private void lvArchivos_DoubleClick(object sender, EventArgs e)
        {
            if ((this.lvArchivos.SelectedItems != null) && (this.lvArchivos.SelectedItems.Count > 0))
            {
                try
                {
                    Cursor.Current = Cursors.WaitCursor;
                    //todo: implementar Process no se que iria, por eso no lo hago ahora.
                    Process.Start(this.listaArchs[this.lvArchivos.SelectedItems[0].Index]);
                    Cursor.Current = Cursors.Default;
                }
                catch (Exception exception1)
                {
                    Exception exception = exception1;
                }
            }
        }

        private void Verificar_Archivos()
        {
            ListViewItem item = null;
            Trabajo_ArchivosObjectList byClientes;
            string str = ConfigurationManager.AppSettings["archivos"] + this._trabajos[this._indexTr].tra_ID.ToString() + @"\";
            try
            {
                byClientes = Trabajo_ArchivosMapper.Instance().GetByTrabajos(this._trabajos[this._indexTr].tra_ID);
            }
            catch (Exception exception1)
            {
                ProjectData.SetProjectError(exception1);
                Exception exception = exception1;
                ProjectData.ClearProjectError();
                return;
            }
            this.listaArchs = new List<string>();
            this.listaArchsN = new List<string>();
            this.listaArchsE = new List<string>();
            this.lvArchivos.Items.Clear();
            int num3 = byClientes.Count - 1;
            for (int i = 0; i <= num3; i++)
            {
                this.listaArchs.Add(str + byClientes[i].tra_Arch);
                item = new ListViewItem();
                string str2 = byClientes[i].tra_Arch.Substring(byClientes[i].tra_Arch.LastIndexOf(".") + 1).ToUpper();
                switch (str2)
                {
                    case "JPG":
                    case "JPEG":
                    case "GIF":
                    case "PNG":
                        item.ImageIndex = 0;
                        break;

                    default:
                        if ((str2 == "XLS") || (str2 == "XLSX"))
                        {
                            item.ImageIndex = 1;
                        }
                        else if (((str2 == "DOC") || (str2 == "DOCX")) || (str2 == "RTF"))
                        {
                            item.ImageIndex = 2;
                        }
                        else if ((str2 == "ZIP") || (str2 == "RAR"))
                        {
                            item.ImageIndex = 3;
                        }
                        else
                        {
                            item.ImageIndex = 4;
                        }
                        break;
                }
                item.ToolTipText = byClientes[i].tra_Arch.Substring(byClientes[i].tra_Arch.LastIndexOf(@"\") + 1).ToUpper();
                item.Name = byClientes[i].tra_Arch.Substring(byClientes[i].tra_Arch.LastIndexOf(@"\") + 1).ToUpper();
                item.Text = byClientes[i].tra_Arch.Substring(byClientes[i].tra_Arch.LastIndexOf(@"\") + 1).ToLower();
                this.lvArchivos.Items.Add(item);
            }
        }

        public void CargarDesdeID(int tra_ID)
        {
            this._trabajos = new TrabajosList();
            this._trabajos.Add(TrabajosMapper.Instance().GetOne(tra_ID));
            //this._trabajos = TrabajosMapper.Instance().GetOne(tra_ID);
            this.BindingSource1.DataSource = this._trabajos;
            if (this._trabajos != null)
            {
                int num2 = this._trabajos.Count - 1;
                for (int i = 0; i <= num2; i++)
                {
                    if (this._trabajos[i].tra_ID == tra_ID)
                    {
                        this._indexTr = i;
                        this.BindingSource1.Position = i;
                        this.Cargar_Trabajo();
                    }
                }
            }
        }

        private void lnkInformePorPatente_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmRptXPatente_new frm = new frmRptXPatente_new();
            frm.Show();
            frm.Patente = txtPatente.Text;
            frm.cargarXPatentes();
            

        }


    }

}